﻿using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using com.clinica.business.BE.acttar;
using com.clinica.business.BE.comun;
using com.clinica.business.BL.interfaces.acttar;
using com.clinica.config;

namespace LiclActTar
{
    public class LiclTarifariosController
    {
        BeginConfig config = new BeginConfig();
        public LiclTarifariosController()
        { 
        
        }
        public List<ParametrosBE> Obtener_Tabla(ParametrosBE oRequest)
        {
            ChannelFactory<ITarifarioBL> factory = null;
            using (factory = new ChannelFactory<ITarifarioBL>(config.Context + "Tarifario"))
            {
                ITarifarioBL oParm = factory.CreateChannel();
                List<ParametrosBE> lst = oParm.ObternerTipoDocumento(oRequest);
                factory.Close();
                return lst;
            }
        }
        public List<TarifarioBE> Obtener_Solicitud_Tarifarios(TarifarioBE oRequest, DateTime dtFecha_Inicio, DateTime dtFecha_Fin)
        {
            ChannelFactory<ITarifarioBL> factory = null;
            using (factory = new ChannelFactory<ITarifarioBL>(config.Context + "Tarifario"))
            {
                ITarifarioBL oTarif = factory.CreateChannel();
                List<TarifarioBE> lst = oTarif.ObternerTarifarios(oRequest, dtFecha_Inicio, dtFecha_Fin);
                factory.Close();
                return lst;
            }
        }
        public List<TarifarioBE> Obtener_Solicitud_Tarifarios_XEstados(TarifarioBE oRequest, DateTime dtFecha_Inicio, DateTime dtFecha_Fin)
        {
            ChannelFactory<ITarifarioBL> factory = null;
            using (factory = new ChannelFactory<ITarifarioBL>(config.Context + "Tarifario"))
            {
                ITarifarioBL oTarif = factory.CreateChannel();
                List<TarifarioBE> lst = oTarif.ObternerTarifariosXEstado(oRequest, dtFecha_Inicio, dtFecha_Fin);
                factory.Close();
                return lst;
            }
        }
        public List<TarifarioBE> Obtener_Solicitud_Tarifarios(TarifarioBE oRequest)
        {
            ChannelFactory<ITarifarioBL> factory = null;
            using (factory = new ChannelFactory<ITarifarioBL>(config.Context + "Tarifario"))
            {
                ITarifarioBL oTarif = factory.CreateChannel();
                List<TarifarioBE> lst = oTarif.ObternerTarifario(oRequest);
                factory.Close();
                return lst;
            }
        }
        public List<TarifarioBE> Obtener_Tarifarios_Origen(TarifarioBE oRequest)
        {
            ChannelFactory<ITarifarioBL> factory = null;
            using (factory = new ChannelFactory<ITarifarioBL>(config.Context + "Tarifario"))
            {
                ITarifarioBL oTarif = factory.CreateChannel();
                List<TarifarioBE> lst = oTarif.ObternerTarifarioOrigen(oRequest);
                factory.Close();
                return lst;
            }
        }
        public List<ServiciosBE> Obtener_Servicios(ServiciosBE oRequest)
        {
            ChannelFactory<ITarifarioBL> factory = null;
            using (factory = new ChannelFactory<ITarifarioBL>(config.Context + "Tarifario"))
            {
                ITarifarioBL oParm = factory.CreateChannel();
                List<ServiciosBE> lst = oParm.ObternerServicios(oRequest);
                factory.Close();
                return lst;
            }
        }
        public int Grabar_Tarifarios(int accion, List<TarifarioBE> oRequest)
        {
            ChannelFactory<ITarifarioBL> factory = null;
            using (factory = new ChannelFactory<ITarifarioBL>(config.Context + "Tarifario"))
            {
                ITarifarioBL oTarif = factory.CreateChannel();
                int result = oTarif.GuardarTarifario(accion,oRequest);
                factory.Close();
                return result;
            }
        }


        public  void AnularTarifario(TarifarioBE request)
        {

            ChannelFactory<ITarifarioBL> factory = null;
            using (factory = new ChannelFactory<ITarifarioBL>(config.Context + "Tarifario"))
            {
                ITarifarioBL oTarif = factory.CreateChannel();
                oTarif.AnularTarifario(request);
                factory.Close();
                           }



        }


        public int Aprobar_Tarifarios(TarifarioBE oRequest)
        {
            ChannelFactory<ITarifarioBL> factory = null;
            using (factory = new ChannelFactory<ITarifarioBL>(config.Context + "Tarifario"))
            {
                ITarifarioBL oTarif = factory.CreateChannel();
                int result = oTarif.ActualizarEstadoTarifario(oRequest);
                factory.Close();
                return result;
            }
        }

     

       }
}
